<p>We often inherit existing Django projects at Lincoln Loop either to provide ongoing maintenance or build new features (or both). Usually these projects are in some state of neglect and disrepair when they come to us. If they were a …</p>
<p>As your organization looks to resolve nagging problems with its website, app, or other tool, engaging with outside developers can feel daunting. Maybe your last agency collaboration didn’t yield the right results, or you’re worried about operating within a tight …</p>
<p>When you’re responsible for your organization’s website, you live in a state of constant worry about its stability. After all, your site is the most prominent touchpoint between the audience you need and the message you have to deliver. If …</p>
<p>When your organization is planning a digital transformation, your website is the headlining act. Rethinking the technology and strategies that best support your message going forward requires time, effort, and a significant investment. If you don’t manage the effort to …</p>
<p>I don’t like Django’s manage.py. My gripes against it are:</p><p>The plethora of files that clutter the root directory of our repos annoys me.</p><p>manage.py</p><p>is just one more in a long line of those.</p><p>In my opinion, there are …</p>
<p>When our agency began in 2007, using Python on the web was still a rarity, but some new projects in the space were starting to pop up. TurboGears had gained popularity with its MVC approach, but it was another Python …</p>
<p>It’s every publisher’s dream to “go viral” and reach thousands, if not millions, of new people. Many videos, tweets, images, articles, and infographics are created with exactly this goal in mind. But far too often, less thought goes into ensuring …</p>
<p>Back in 2018, I wrote about</p><p>using</p><p>setup.py</p><p>in your Django/Python project</p><p>. Five years later,</p><p>setup.py</p><p>is being phased out in favor of</p><p>pyproject.toml</p><p>. I’m a big fan of this change. With</p><p>setup.py</p><p>you could really go off …</p>
<p>Your website is the hub of your business. It holds the promise of competitive advantage and the responsibility of delivering excellent customer service.</p><p>Designing and building any new web application or restructuring your web development operations is a substantial undertaking, …</p>
<p>tl;dr</p><p>I built a benchmark for Python Package managers, you can view it at</p><p>https://lincolnloop.github.io/python-package-manager-shootout/</p><p>When starting a new Python project, you have a few different options for how you want to manage your dependencies. Like Node.js has</p><p>npm</p><p>, …</p>
<p>One of the first things you need to do when starting a new Django project is to choose which version of Django you are going to use. At any given time, there could be as many as three supported Django …</p>
<p>In 2014 Yann Malet and I (with the help of the rest of the team here) wrote a book about building and scaling Django websites. It was the culmination of things we’d learned from, at the time, close to a …</p>
<p>As you start scaling an application out horizontally (adding more servers/instances), you may run into a problem that requires</p><p>distributed locking</p><p>. That’s a fancy term, but the concept is simple. Sometimes you have to be sure that when a …</p>
<p>I’ve been working quite a bit lately on streamlining Lincoln Loop’s standard deployment systems. One thorn we’ve always had is how to handle application configuration.</p><p>In the past, we would have our configuration management system write the configuration out to …</p>
<p>Two of the biggest benefits</p><p>pipenv</p><p>and</p><p>poetry</p><p>are dependency locking and hash checking. Dependency locking means you can specify the direct dependencies your code requires, for example,</p><p>celery==4.4.*</p><p>and the tooling will lock, not only</p><p>celery</p><p>to a specific …</p>
<p>In</p><p>a previous post</p><p>, we showed how to use</p><p>shiv</p><p>to bundle a Django project into a single file for distribution and deployment. Running a large Python project as a single file feels like magic – which is great …</p>
<p>This post covers portions of my talk,</p><p>Containerless Django</p><p>, from DjangoCon US 2018.</p><p>Deploying Python has improved significantly since I started working with it over a decade ago. We have virtualenv, pip, wheels, package hash verification, and</p><p>lock</p><p>files …</p>
<p>Our venerable IRC logger,</p><p>BotBot.me</p><p>logged its first lines in the summer of 2012 . Since then, it has logged over 100 million lines for more than 400 IRC channels, primarily on the Freenode and Mozilla networks. Despite the rise …</p>
<p>With Ubuntu 14.04 (Trusty) now a year away from end-of-life, we’ve been planning and performing upgrades for the soon-to-be legacy OS. The biggest change is the move from</p><p>Upstart</p><p>to</p><p>Systemd</p><p>for managing services. It’s trivial to convert a service …</p>
<p>I’ll be the first to admit that I was skeptical about</p><p>Systemd</p><p>and its companion log aggregator</p><p>Journald</p><p>, but after working with if for a few months, I’ve seen the light (or drunk the Kool Aid… not sure).</p><p>Typically …</p>
<p>Every Django project starts with a</p><p>manage.py</p><p>file in its root. It’s a convenience script that allows you to run administrative tasks like Django’s included</p><p>django-admin</p><p>.</p><p>In</p><p>our last post</p><p>, we discussed the merits of including a</p><p>setup.py …</p>
<p>A client recently asked me why all the Django projects we create have a</p><p>setup.py</p><p>in the root of the project. Lots of projects get by just fine without one, so why do I use it? The explanation turned out …</p>
<p>Good logging is critical to debugging and troubleshooting problems. Not only is it helpful in local development, but in production it’s indispensable. When reviewing logs for an issue, it’s rare to hear somebody say, “We have too much logging in …</p>
<p>One of Django’s nice “batteries included” features is the ability to send emails when an error is encountered. This is a great feature for small sites where minor problems would otherwise go unnoticed.</p><p>Once your site start getting lots of …</p>
<p>One of the things I love about the DevOps movement is how (when done right) it empowers developers to work with infrastructure in a safe and controlled manner. Once you’ve nailed down deployments to a static set of servers (production, …</p>
<p>In this long overdue follow-up to</p><p>Part 1</p><p>, I’ll be discussing the infrastructure issues associated with creating and serving image thumbnails at scale. The naive solution to generating thumbnails is to declare the image sizes you want in your …</p>
<p>One of my favorite patterns in Django is the combination of “fat” models and</p><p>cached_property</p><p>from</p><p>django.utils.functional</p><p>.</p><p>Fat models are a general MVC concept which encourages pushing logic into methods on your Model layer rather than the Controller (“view” …</p>
<p>Django’s</p><p>Signal Dispatcher</p><p>is a really powerful feature that you should never use. Ok, it has valid use cases, but they may be rarer than you think.</p><p>First, to dispel a misconception about signals, they are not executed asynchronously. There …</p>
<p>In another of our “you can do that?!?” with uWSGI posts, today I’ll show you how to use uWSGI to host multiple sites</p><p>and</p><p>properly route traffic based on the hostname to those sites.</p><p>Multiple Sites (aka Emperor Mode)</p><p>uWSGI …</p>
<p>April marked Lincoln Loop’s 10th anniversary in business. As I reflect on that, I find myself going through all the typical platitudes: it’s been a roller-coaster ride, how proud I am of the team, looking forward to another 10 years, …</p>
<p>Serving Static Files with uWSGI</p><p>As noted in a previous post,</p><p>uWSGI is a Swiss Army knife</p><p>of functionality. One of its features is a built-in static file server.</p><p>When to Use uWSGI for Serving Static Files</p><p>While it may …</p>
<p>Images are everywhere on the web. Whether you’re building a simple blog, a CMS, or a true web application, chances are good that you’ll need to deal with images. Editors, authors, users, etc. expect to be able to upload images …</p>
<p>Our</p><p>Kickstarter campaign</p><p>for a companion video series to our book</p><p>High Performance Django</p><p>ended today just shy of its target.</p><p>We consider it a great success!</p><p>That’s right… a</p><p>success</p><p>. When we started the campaign, our internal goal …</p>
<p>uWSGI is one of those interesting projects that keeps adding features with every new release without becoming totally bloated, slow, and/or unstable. In this post, we’ll look at some of its lesser used features and how you might use them …</p>
<p>I’ve been working on improving our deployment processes as part of the</p><p>High Performance Django Infrastructure</p><p>project we’re building out. One consistent pain point is our front-end build system, and particularly,</p><p>npm</p><p>installs. For a number of reasons, instead of …</p>
<p>Alternate title: Pip 7 is Awesome, Here’s Why</p><p>A typical Python deployment looks like this:</p><p>Pave the server, setting up a virtualenv and installing any pre-requisites necessary to build/install the Python requirements (compiler, development headers, etc.).</p><p>To update to a …</p>
<p>Part of my job at Lincoln Loop is to explore new technologies and make sure that, as a company, we stay current. I’ve been playing around with Docker for a while, but recently decided to redeploy some of our production …</p>
<p>One of the most common requests we’ve heard since releasing our book,</p><p>High Performance Django</p><p>is: “Do you have more code/configuration examples?” It’s a pretty loaded question because the book covers everything from Python code to deploying and configuring servers. …</p>
<p>With the launch of our book,</p><p>High Performance Django</p><p>, we’ve received a number of inquiries from people asking for advice, for which the answers are too specific to their application to give good general advice, and too short to …</p>
<p>Do you manage a website? Does it have a login form? Can somebody brute force attack it with every common username/password combination until they find one that works?</p><p>For many small web applications, the answer to all of the above …</p>
<p>Last month, I presented</p><p>High Performance Django: From Runserver to Reddit Hugs</p><p>at DjangoCon US in Portland. My assertion was that Django, left to its own devices, does not scale. With the right supporting servers, however, it can scale fantastically. …</p>
<p>I’m excited to announce that our book, High Performance Django is officially complete. You can buy a copy at</p><p>highperformancedjango.com</p><p>now.</p><p>Thank You</p><p>Writing the book was hard work and there were definitely times where the challenge felt insurmountable. I …</p>
<p>I'm really excited to (finally) announce that we are writing a book! We've been working with Django professionally for a long time (over 7 years now). During that time, we've learned</p><p>a lot</p><p>about how to use the framework to …</p>
<p>Building realtime applications is a big change from how we’ve built websites in the past. Typically, realtime websites require each client holding open a long-running connection to the server so updates can be pushed down to the client immediately. This …</p>
<p>2013 was an amazing roller coaster year at Lincoln Loop. This is a long post, so I’ll skip the intro and dive right in.</p><p>Company Accomplishments</p><p>Of all the things we did and built, I’m most proud of what we …</p>
<p>Over the years, I’ve used a lot of server monitoring systems. Big enterprisey ones like Zabbix, Zenoss, and Hyperic, smaller ones like munin and monit, stuff in the middle like Graphite, and hosted solutions like New Relic. Throughout the search, …</p>
<p>Trailmapping.com was a</p><p>fun experiment with rapid development in Django</p><p>I released almost 5 years ago now(!). I</p><p>spoke about it at the first DjangoCon</p><p>(also my first “real” talk in front of an audience). I didn’t give it much …</p>
<p>Over the last couple months we’ve been busy tying up loose ends and preparing for our first “official” company-wide retreat. Even though we’re a fully distributed team, we’re big believers in the power of meet-ups and face-time. They form bonds, …</p>
<p>A common paradigm in Django is to create different settings files for different environments (local, production, staging, etc.). Everyone has their own opinion on how to set these up (see</p><p>ours here</p><p>), that’s not what this post is about. …</p>
<p>2012 was another amazing year at Lincoln Loop. I’m incredibly proud of the work we accomplished and the growth and development we’ve made as a company. A few of the highlights:</p><p>We launched our first product,</p><p>Ginger</p><p>. It is …</p>
<p>In our last installment, I introduced our</p><p>distributed workplace</p><p>and why we prefer it over a traditional office. Over the years, we’ve learned a lot about</p><p>how</p><p>to make a distributed workplace, well… work.</p><p>The single most important we learned …</p>
<p>Today we’re introducing a new member of the Lincoln Loop family,</p><p>BotBot.me</p><p>. At the moment, BotBot is beautiful hosted</p><p>IRC</p><p>logs (try</p><p>#django</p><p>or</p><p>#go-nuts</p><p>). We built it for people who love</p><p>IRC</p><p>and we want your advice …</p>
<p>First off, realtime websites are hard. The current toolset is rudimentary. When I first started building</p><p>Ginger</p><p>, I thought I must be doing it wrong because of all the trial-and-error and pieces I was building from scratch. After watching …</p>
<p>Here’s a map of our current offices at Lincoln Loop:</p><p>That’s 10 people, 5 timezones, and 3 continents for those of you counting at home. I use the term “office” loosely because we don’t have a central office in the …</p>
<p>One of my recent tasks in</p><p>Ginger</p><p>was to ensure that we weren’t leaking referrer</p><p>URL</p><p>s when you click on an external link in Ginger. It seemed like an easy task and one that’s probably been solved before. What …</p>
<p>Our new product</p><p>Ginger</p><p>relies heavily on</p><p>Backbone.js</p><p>for most of the client-side functionality (you can read about our full web-stack</p><p>here</p><p>). Our JavaScript guru</p><p>Marco</p><p>built the initial prototype and then was pulled away by client work. I …</p>
<p>As mentioned in my previous post, everyone at Lincoln Loop sets their own salary. It’s another radical divergance from the business norm that we borrowed from the book of Ricardo Semler.</p><p>Every six months, I meet with each of our …</p>
<p>Maverick</p><p>by</p><p>Ricardo Semler</p><p>was an eye-opening read for me a while back. It is a detailed account of his (highly profitable) company which is a radical departure from the traditional workplace.</p><p>Rework</p><p>(published over 20 years later) reads like …</p>
<p>For our latest product,</p><p>Ginger</p><p>, we wanted to marry the real-time functionality we needed with the traditional Django stack we know and love. After some false starts and falling on our faces in the beginning, we ended with a …</p>
<p>Development is a creative endeavor. Often developers are creating something where there was once nothing. For most us, the thought of being productive for 8 consecutive hours 5 days a week is laughable. 2-3 hours on a single problem is …</p>
<p>Our team of 10 is distributed across 8 countries and 3 continents. We have no central office. When we first started, a couple years might go by without ever meeting in person, now we meet in person for at least …</p>
<p>It’s been a while since we’ve posted anything here about Lincoln Loop, so it’s time for a quick update.</p><p>In short, we’ve been hard at work. In addition to having</p><p>multiple</p><p>speakers</p><p>at DjangoCon, and starting work on</p><p>an internal …</p>
<p>We love the Django community and to show our thanks, we’re throwing a private party Wednesday night for DjangoCon attendees. After dinner (9-11pm), come on down to</p><p>Ground Kontrol</p><p>, Portland’s favorite classic arcade. We’ll have an open bar (while …</p>
<p>Coverage.py</p><p>makes it easy to see how much of your code is covered by your test suite. It can be configured to spit out reports in</p><p>XML</p><p>(for consumption by a continuous integration server like Jenkins), in</p><p>HTML</p><p>(for human …</p>
<p>We’re looking for a Django developer to join</p><p>our team</p><p>. With the impending departure of</p><p>Armin Ronacher</p><p>to finish his degree, we’re going to be at least one developer short this Fall. We’re looking for somebody who can jump …</p>
<p>We love</p><p>pip</p><p>and</p><p>Fabric</p><p>for Django deployment. You can see</p><p>our boilerplate fabfile.py here</p><p>. Pip, however, isn’t safe to run in an automated fashion. If you attempt to switch branches or repos for one of your editable requirements, …</p>
<p>I really like</p><p>supervisord</p><p>for long-running process management. It is Python, so it is easy to install and it is easy to script with tools like</p><p>Fabric</p><p>. Lately I’ve been deploying smaller Django/WSGI sites with</p><p>Green Unicorn</p><p>behind Nginx …</p>
<p>I just finished reading the copy of</p><p>Django 1.1 Testing and Debugging</p><p>by Karen M. Tracey provided to us for review by Packt Publishing. For those of you who don’t know, Karen is a</p><p>core developer of Django</p><p>and her …</p>
<p>I’m pleased to announce that</p><p>Gondola for Real Estate</p><p>, our GeoDjango-backed real estate</p><p>CMS</p><p>is publicly accepting new customers. A couple weeks ago, we quietly re-launched</p><p>gondolacms.com</p><p>with some details about the platform and what it has to offer, …</p>
<p>Today, we are launching a new offering at Lincoln Loop, development services paid by the sprint. Previously, our typical engagements involved a (sometimes lengthy) discovery, estimation, and bidding process. Lately, however, people have been asking us to jump in with …</p>
<p>Homebrew</p><p>seems to be the hot new package manager for OS X, so while setting up a new system last night, I figured I’d see how it handled installing all the</p><p>external libraries required for GeoDjango</p><p>. The answer I …</p>
<p>Here’s one I struggled with a bit while upgrading lincolnloop.com yesterday.</p><p>Scenario:</p><p>You need to take your site offline and want to redirect all its traffic to a “down for maintenance” page. For search engine friendliness, that page should return …</p>
<p>As Lincoln Loop has evolved and grown over the last year, we’ve learned a lot not only about software development, but also about all the things that accompany it like budgeting, estimating, and scheduling. Probably the most important one is …</p>
<p>Packt Publishing was nice enough to send us a copy of</p><p>Django 1.0 Template Development by Scott Newman</p><p>for review recently. I get most of my technical information via the web, so picking up a technical book was a nice …</p>
<p>In</p><p>part 1</p><p>, we showed how we use</p><p>Fabric</p><p>to update and deploy Django sites to our development server with a single command. This works great when you only have one developer pushing changes to the server, but what …</p>
<p>We’re firm believers in the practices described by the</p><p>Continuous Integration</p><p>method of software engineering. Among those are:</p><p>Maintain a code repository</p><p>Automate the build</p><p>Automate deployment</p><p>We use git for our code repositories and</p><p>Fabric</p><p>to automate our build/deployment …</p>
<p>Last month, Lincoln Loop gave a talk at</p><p>EuroDjangoCon</p><p>about customizing the Django admin interface. After presenting some of the admin customizations we had done on</p><p>Gondola</p><p>, I had a bunch of people get in touch with me asking …</p>
<p>I’ve always disliked the way named anchors (</p><p><a href="#name">...</a></p><p>) behave in browsers. It jumps your viewport to a different part of the page, but it’s rarely obvious which section you have landed on. If the page is long …</p>
<p>This post got a bit long-winded,</p><p>skip to the project announcment</p><p>if you prefer.</p><p>One of the things I love about Python and Django is the philosophy that</p><p>there is one obvious way to do things</p><p>. Standards make it …</p>
<p>While browsing the source code of President Obama’s latest web initiative,</p><p>recovery.org</p><p>, I noticed something of interest.</p><p><</p><p>script</p><p>type</p><p>=</p><p>"text/javascript"</p><p>></p><p><!--</p><p>//--><![CDATA[//><!--</p><p>jQuery</p><p>.</p><p>extend</p><p>(</p><p>Drupal</p><p>.</p><p>settings</p><p>,</p><p>{</p><p>"basePath"</p><p>:</p><p>"/"</p><p>});</p><p>//--><!]]> …</p>
<p>Satchmo</p><p>is an amazing E-Commerce engine built on top of Django. After struggling in the past with difficult packages like ZenCart and</p><p>OSC</p><p>ommerce, Satchmo’s ease of customization make it a joy to work with.</p><p>Unfortunately, all the features can …</p>
<p>In the process of prepping</p><p>Gondola</p><p>CMS</p><p>for public consumption, we’ve grown from having a developer (me), to having a development team. One pain point that quickly arose was the amount of time it took for new developers to setup …</p>
<p>We all know not to serve static media (images,</p><p>CSS</p><p>, Javascript, etc.) in production directly from Django. Thankfully, Django gives us some nice settings like</p><p>MEDIA</p><p>_URL</p><p>and</p><p>MEDIA</p><p>_ROOT</p><p>to make serving them a lot less painless. Lately, …</p>
<p>After reading the comments on</p><p>my last post on the subject</p><p>, I realized there was definitely some room for improvement in my strategy. This is take two of the original post.</p><p>Problems</p><p>My original strategy had a couple of …</p>
<p>Gondola is our content management system built on top of Django. I briefly showed it off during</p><p>my DjangoCon Lightning Talk</p><p>, but have been wanting to give it a proper screencast for a while. Here’s an introduction:</p><p>A few …</p>
<p>DjangoCon</p><p>was an amazing conference all around. I met some great people and learned a lot. I also had the opportunity to get up on stage and present some of the things I’ve been working on here. I was really …</p>
<p>This article is outdated, you’ll find an</p><p>updated article here</p><p>.</p><p>A friend is in the process of setting up a new slice at everbody’s favorite</p><p>VPS</p><p>provider</p><p>Slicehost</p><p>and asked for some advice. I use MySQL, Nginx & Apache/mod_wsgi …</p>
<p>All the recent</p><p>hub</p><p>bub</p><p>about 1 week and 1 day application development, motivated me to see how quickly I could launch a website for myself. I, like many developers, struggle with building and releasing personal sites. Ask a web …</p>
<p>Lincoln Loop has been in “head down” mode for the last couple months. In addition to being knee deep in client projects, we have grown from a one-man development studio to a full-fledged Django development shop/consultancy. We are proud to …</p>
<p>Lately, we’ve been taking over projects from people who began building their first site in Django, but either got in over their head or just found they didn’t have the time to continue. As I review the existing code, the …</p>
<p>For those of you that have been hiding under a rock for the last 12 hours,</p><p>App Engine</p><p>is Google’s answer to</p><p>Amazon Web Services</p><p>. While it is less flexible in some senses (you don’t have a complete OS …</p>
<p>One of the things that drew me towards Django was the idea of being able to create reusable applications that would sit on my</p><p>PYTHONPATH</p><p>instead of copied across multiple sites. Coming from WordPress, the constant security updates that required …</p>
<p>Download</p><p>django-cpserver</p><p>Now at</p><p>GitHub</p><p>Background</p><p>A few months ago, I got sick of trying to deploy Django sites on my cPanel server and got a</p><p>VPS</p><p>at</p><p>Slicehost</p><p>. Thanks to</p><p>SuperJared</p><p>, setting up Apache/mod_python behind an Nginx …</p>
<p>Here’s a little nugget I just posted to</p><p>Django Snippets</p><p>. It emulates the behavior of an old Perl script I used way back when,</p><p>FormMail.pl</p><p>.</p><p>I often find myself needing to build a form whose contents get emailed …</p>
<p>The</p><p>newforms</p><p>library is a huge time-saver, but when I first started using it, I still found myself writing tedious repetitve code to get it to function how I wanted. While I could get away with it on smaller sites, …</p>
<p>We recently built and launched</p><p>CashOffersFast.com</p><p>. It gives people an easy, no-risk way to put their home up for sale. Pre-qualified investors can then make anonymous bids on any home listed with the site.</p><p>We worked very closely with …</p>
<p>I’ve been wanting to update my website for quite a while. It got to the point that I wasn’t referring people to my old site because it had become such a poor representation of what Lincoln Loop has evolved into. …</p>
<p>I’ve been kicking around the idea of switching hosting providers for a while. I finally took the plunge and if you’re reading this, it is being served off the new platform. I’m going to be</p><p>eating my own dog food …</p>
<p>Hey Adobe,</p><p>Progress bars are meant to indicate progress. When they sit in one place for 20+ minutes, it makes people think progress has stopped and something is broken. I shouldn’t have to check my running processes to see if …</p>
<p>Our latest site launch was for Bee Herz, a local psychic medium. The elegant design was done by</p><p>ashwebmedia</p><p>with coding done here at Lincoln Loop.</p>
<p>A few weeks ago, I released</p><p>Prudential Steamboat Realty’s new site</p><p>into the wild. It is my first (but not last) large site built in</p><p>Django</p><p>to go live. As usual,</p><p>ashwebmedia</p><p>did a great job on redesigning the site …</p>
<p>I’m proud to announce that, as of today, Lincoln Loop,</p><p>LLC</p><p>has become a completely</p><p>carbon neutral</p><p>business.</p><p>Our footprint was pretty minimal to start. Our shared server, Olivia, only draws about 180 watts or 1 ton of CO</p><p>2 …</p>
<p>WordPress</p><p>, you seemed perfect at first. You saved me lots of development time, seemed to have a plugin for everything I needed, and a user interface that was easy for anybody to use.</p><p>The honeymoon has worn off though. …</p>
<p>Just put the final touches on</p><p>www.bearlodgesteamboat.com</p><p>. It is a WordPress site designed by</p><p>ashwebmedia</p><p>, then hand-coded into a custom WordPress theme at Lincoln Loop.</p>
<p>The new Waterside Day Spa site is out the door. The site was built using</p><p>WordPress</p><p>as the backend</p><p>CMS</p><p>with a custom theme developed by myself and designed by the talented Derek Ashauer of</p><p>ashwebmedia</p><p>.</p><p>Overall, I’m very …</p>
<p>As promised, here is the follow-up to the</p><p>SVN</p><p>for Web Developers</p><p>post,</p><p>Basecamp</p><p>integration.</p><p>Why?</p><p>Transparency is very important to my business. The #1 complaint I hear about web developers is that they rarely meet deadlines and the client …</p>
<p>I switched from Ubuntu Linux to a Mac last week. I knew the new system would force me to adapt my workflow a bit so I figured it would be a good opportunity to break some bad habits.</p><p>One of …</p>
<p>I just wrapped up development on a website for</p><p>The Victoria</p><p>, a high-end mixed use development in downtown Steamboat.</p><p>Derek at</p><p>ashwebmedia</p><p>is the designer behind the site. It is the first work we’ve done together and he really …</p>
<p>A copy of this letter went out to the</p><p>NDS</p><p>Internet client list today.</p><p>I am pleased to announce that as of April 1, 2007,</p><p>NDS</p><p>Internet will become Lincoln Loop,</p><p>LLC</p><p>, Steamboat Springs’ only company dedicated exclusively to …</p>